namespace Bowlus.FrontEnd.RequestRouting.ApplicationDeployment
{
    using System.Collections.Generic;

    using Bowlus.Common;

    public interface IApplicationDeploymentStrategy
    {
        IEnumerable<ApplicationDeploymentRequest> AddApplication(TenantDeployment newDeployment, IEnumerable<ApplicationHost> appHosts);

        IEnumerable<ApplicationDeploymentRequest> RemoveApplication(TenantDeployment newDeployment, IEnumerable<ApplicationHost> appHosts);

        IEnumerable<ApplicationDeploymentRequest> InitializeDeployments(IEnumerable<ApplicationHost> applicationHosts, IEnumerable<TenantDeployment> tenantDeployments);

        IEnumerable<ApplicationDeploymentRequest> AddHost(ApplicationHost newHost, IEnumerable<ApplicationHost> appHosts);

        IEnumerable<ApplicationDeploymentRequest> RemoveHost(ApplicationHost hostToRemove, IEnumerable<ApplicationHost> appHosts);
    }
}